前一篇文章有提到該如何利用 SQLALchemy 建立一張資料表,
這篇文章主要是紀錄該如何利用 SQLALchemy 進行資料的操作,
查詢的部分則是會放到下一篇文章
可以透過在同一個 module 下直接進行資料的操作,
也可以將另外撰寫一個 module 並將表結構以及操作實體 import
來進行操作,下面的範例都會是採用後者的寫法並將檔案命名為 test.py
from main import create_session
from main import Test
session = create_session()
利用 session.add() 即可插入單筆資料
import datetime
from main import create_session
from main import Test
session = create_session()
datas = {
"name": "nick",
"time": datetime.datetime.now()
}
session.add(Test(**datas))
session.commit()
session.close()
註: sqlite 的 DATETIME 只接受 DATETIME object 的型態,因此不需要 strftime()
註: **
代表將資料打包成 key, value 的形式,詳細參考資料
如果加入了不在表結構當中的元素,系統則會跳出錯誤
from main import create_session
from main import Test
session = create_session()
datas = {
"name": "nick",
"time": datetime.datetime.now(),
"location": "Taiwan"
}
try:
session.add(Test(**datas))
session.commit()
except Exception as e:
print(e.__class__.__name__)
print(str(e))
finally:
session.close()
將資料以串列的型態包起來並利用 session.add_all()
from main import create_session
from main import Test
session = create_session()
datas = [
Test(name="nick", time=datetime.datetime.now()),
Test(name="honey", time=datetime.datetime.now())
]
try:
session.add_all(datas)
session.commit()
except Exception as e:
print(e.__class__.__name__)
print(str(e))
finally:
session.close()
from main import create_session
from main import Test
session = create_session()
datas = {"name": "andy"}
try:
session.query(Test).filter_by(id=1).update(datas)
session.commit()
except Exception as e:
print(e.__class__.__name__)
print(str(e))
finally:
session.close()
語法拆解:
原理同 update(),只是 delete() 並不需要傳入參數
from main import create_session
from main import Test
session = create_session()
try:
session.query(Test).filter_by(id=1).delete()
session.commit()
except Exception as e:
print(e.__class__.__name__)
print(str(e))
finally:
session.close()